FPGA 笔记

第 1 章 Verilog 的基本知识

 

第 2 章 Verilog 语法的基本概念

2.1 Verilog 模块的基本概念

 

 

 

 

 

 

 

2.2 Verilog 用于模块的测试

 

第 3 章 模块与数据类型及其运算符

3.1 模块结构

3.2 数据类型

3.2.1 常量

 

3.2.2 变量

在 Verilog 中,所有变量都是静态的.

网络数据类型:不能存储值,必须受到驱动器(如连续赋值语句)的驱动

 

第 4 章 运算符、赋值语句和结构说明语句

 

 

 

第 5 章 流程控制语句

if 语句

case 语句

forever 语句

repeat 语句

 

while 语句

 

for 语句

 

块语句

顺序块

并行块

块语句可以嵌套

块语句的命名

 

5.7 生成块

5.7.1 循环生成语句

 

5.7.2 条件生成语句

 

5.7.3 case 生成语句

 

5.8 举例

5.8.1 四选一多路选择器

写法一:

 

写法二:

 

上述代码的 testbench:

 

5.8.2 四位计数器

 

 

 

第 6 章 结构语句、系统任务、函数语句和显示系统任务

6.1 系统说明语句

6.1.1 initial

一个模块可以有多个 initial 块,并且都是并行运行的.

6.1.2 always

 

6.2 task 和 function

6.2.1 说明语句介绍

 

6.2.2 task 说明语句

 

 

6.2.3 function 说明语句

 

 

使用规则

 

 

6.2.4 函数的使用举例

1 奇偶校验位

 

2 左右移位寄存器

 

6.2.5 自动递归函数

Verilog 中的函数默认不能递归调用,如果同时调用同一块地址空间,那么计算结果将不确定.

 

6.2.6 常量函数

 

6.2.7 带符号函数

 

6.4 常用的系统任务

6.4.1 $display 和 $write

image-20230531121244091

image-20230531121339370

 

 

 

6.4.2 文件输出

 

6.4.3 显式层次

 

6.4.4 选通显示

 

6.4.5 值变转储文件

 

 

 

第 7 章 调试用系统任务和编译预处理语句

7.1 $monitor

 

7.2 $time 与 $realtime

 

7.3 $finish 与 $stop

 

7.4 $readmemb 与 $readmemh

 

7.6 $random

 

7.7 编译预处理

 

 

 

第 12 章 状态机

 

 

 

 

第 13 章 编写可综合的代码

13.5.1 组合逻辑电路

 

 

 

 

 

 

 

 

 

 

13.5.2 时序逻辑电路